{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1705b736",
   "metadata": {},
   "source": [
    "## SETUP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "26ba9e18",
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install dezerogym"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "816f9881",
   "metadata": {},
   "source": [
    "## ch05/dice.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5f14b6e5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.0\n",
      "4.0\n",
      "5.333333333333333\n",
      "5.75\n",
      "5.8\n",
      "5.833333333333333\n",
      "5.285714285714286\n",
      "5.875\n",
      "6.111111111111111\n",
      "6.3\n",
      "6.0\n",
      "6.416666666666667\n",
      "6.538461538461538\n",
      "6.642857142857142\n",
      "6.7333333333333325\n",
      "6.874999999999999\n",
      "6.941176470588235\n",
      "6.722222222222221\n",
      "6.473684210526315\n",
      "6.6499999999999995\n",
      "6.666666666666666\n",
      "6.681818181818182\n",
      "6.608695652173913\n",
      "6.75\n",
      "6.72\n",
      "6.9230769230769225\n",
      "6.925925925925926\n",
      "7.107142857142857\n",
      "7.1724137931034475\n",
      "7.0666666666666655\n",
      "6.903225806451612\n",
      "6.999999999999999\n",
      "7.06060606060606\n",
      "7.088235294117646\n",
      "7.17142857142857\n",
      "7.194444444444443\n",
      "7.1621621621621605\n",
      "7.052631578947366\n",
      "6.999999999999998\n",
      "6.999999999999998\n",
      "7.1219512195121935\n",
      "7.071428571428569\n",
      "7.023255813953487\n",
      "7.068181818181817\n",
      "6.955555555555554\n",
      "7.065217391304346\n",
      "6.999999999999998\n",
      "6.916666666666665\n",
      "6.857142857142856\n",
      "6.839999999999999\n",
      "6.784313725490195\n",
      "6.807692307692307\n",
      "6.792452830188678\n",
      "6.777777777777776\n",
      "6.745454545454543\n",
      "6.732142857142855\n",
      "6.789473684210524\n",
      "6.793103448275859\n",
      "6.745762711864404\n",
      "6.666666666666663\n",
      "6.672131147540981\n",
      "6.7258064516129\n",
      "6.714285714285712\n",
      "6.781249999999997\n",
      "6.799999999999997\n",
      "6.77272727272727\n",
      "6.761194029850744\n",
      "6.7647058823529385\n",
      "6.753623188405794\n",
      "6.799999999999997\n",
      "6.760563380281687\n",
      "6.805555555555553\n",
      "6.808219178082189\n",
      "6.797297297297295\n",
      "6.813333333333331\n",
      "6.802631578947366\n",
      "6.766233766233764\n",
      "6.794871794871793\n",
      "6.8227848101265804\n",
      "6.812499999999998\n",
      "6.827160493827159\n",
      "6.865853658536584\n",
      "6.89156626506024\n",
      "6.869047619047618\n",
      "6.858823529411763\n",
      "6.860465116279069\n",
      "6.839080459770114\n",
      "6.874999999999998\n",
      "6.887640449438201\n",
      "6.844444444444443\n",
      "6.857142857142856\n",
      "6.8804347826086945\n",
      "6.913978494623655\n",
      "6.925531914893616\n",
      "6.9263157894736835\n",
      "6.927083333333333\n",
      "6.876288659793814\n",
      "6.86734693877551\n",
      "6.8686868686868685\n",
      "6.91\n",
      "6.871287128712871\n",
      "6.8431372549019605\n",
      "6.805825242718447\n",
      "6.8076923076923075\n",
      "6.809523809523809\n",
      "6.80188679245283\n",
      "6.803738317757009\n",
      "6.8240740740740735\n",
      "6.862385321100917\n",
      "6.863636363636363\n",
      "6.846846846846846\n",
      "6.857142857142857\n",
      "6.867256637168142\n",
      "6.885964912280702\n",
      "6.895652173913044\n",
      "6.913793103448277\n",
      "6.914529914529916\n",
      "6.915254237288137\n",
      "6.89075630252101\n",
      "6.858333333333334\n",
      "6.842975206611571\n",
      "6.860655737704919\n",
      "6.845528455284554\n",
      "6.838709677419356\n",
      "6.880000000000001\n",
      "6.896825396825397\n",
      "6.889763779527559\n",
      "6.8828125\n",
      "6.891472868217054\n",
      "6.892307692307692\n",
      "6.916030534351145\n",
      "6.931818181818182\n",
      "6.932330827067669\n",
      "6.9179104477611935\n",
      "6.918518518518518\n",
      "6.9191176470588225\n",
      "6.9343065693430646\n",
      "6.927536231884057\n",
      "6.920863309352517\n",
      "6.92142857142857\n",
      "6.957446808510637\n",
      "6.950704225352111\n",
      "6.95104895104895\n",
      "6.92361111111111\n",
      "6.889655172413792\n",
      "6.890410958904108\n",
      "6.9183673469387745\n",
      "6.898648648648647\n",
      "6.872483221476509\n",
      "6.899999999999999\n",
      "6.887417218543045\n",
      "6.868421052631578\n",
      "6.895424836601306\n",
      "6.896103896103894\n",
      "6.8774193548387075\n",
      "6.897435897435895\n",
      "6.891719745222928\n",
      "6.892405063291137\n",
      "6.918238993710689\n",
      "6.9187499999999975\n",
      "6.906832298136644\n",
      "6.888888888888887\n",
      "6.865030674846624\n",
      "6.878048780487803\n",
      "6.8666666666666645\n",
      "6.86746987951807\n",
      "6.880239520958082\n",
      "6.886904761904759\n",
      "6.899408284023666\n",
      "6.9235294117647035\n",
      "6.9122807017543835\n",
      "6.901162790697672\n",
      "6.884393063583813\n",
      "6.890804597701147\n",
      "6.914285714285712\n",
      "6.903409090909088\n",
      "6.909604519774009\n",
      "6.9382022471910085\n",
      "6.966480446927371\n",
      "6.988888888888886\n",
      "7.005524861878451\n",
      "7.005494505494503\n",
      "6.999999999999997\n",
      "6.999999999999997\n",
      "7.010810810810808\n",
      "6.983870967741932\n",
      "6.9786096256684464\n",
      "6.978723404255317\n",
      "6.968253968253966\n",
      "6.989473684210524\n",
      "6.989528795811516\n",
      "6.999999999999998\n",
      "6.999999999999998\n",
      "7.005154639175256\n",
      "6.979487179487178\n",
      "6.994897959183672\n",
      "6.97969543147208\n",
      "6.979797979797978\n",
      "6.979899497487436\n",
      "6.994999999999998\n",
      "6.990049751243779\n",
      "6.995049504950493\n",
      "7.019704433497535\n",
      "7.014705882352939\n",
      "7.024390243902437\n",
      "7.004854368932037\n",
      "6.995169082125602\n",
      "7.004807692307691\n",
      "6.980861244019137\n",
      "6.990476190476189\n",
      "6.9810426540284345\n",
      "6.976415094339621\n",
      "6.962441314553989\n",
      "6.94859813084112\n",
      "6.9395348837209285\n",
      "6.949074074074073\n",
      "6.967741935483869\n",
      "6.963302752293576\n",
      "6.9726027397260255\n",
      "6.990909090909089\n",
      "6.986425339366514\n",
      "6.968468468468466\n",
      "6.964125560538115\n",
      "6.977678571428569\n",
      "6.968888888888887\n",
      "6.9557522123893785\n",
      "6.969162995594711\n",
      "6.960526315789472\n",
      "6.969432314410478\n",
      "6.978260869565215\n",
      "6.974025974025972\n",
      "6.987068965517239\n",
      "7.008583690987122\n",
      "7.012820512820511\n",
      "7.025531914893615\n",
      "7.0211864406779645\n",
      "7.033755274261602\n",
      "7.03361344537815\n",
      "7.016736401673639\n",
      "7.024999999999999\n",
      "7.012448132780081\n",
      "7.02479338842975\n",
      "7.020576131687241\n",
      "7.012295081967211\n",
      "7.020408163265304\n",
      "7.016260162601624\n",
      "7.032388663967609\n",
      "7.040322580645159\n",
      "7.0522088353413634\n",
      "7.043999999999998\n",
      "7.0358565737051775\n",
      "7.043650793650792\n",
      "7.047430830039524\n",
      "7.047244094488187\n",
      "7.054901960784312\n",
      "7.054687499999998\n",
      "7.050583657587547\n",
      "7.065891472868215\n",
      "7.077220077220075\n",
      "7.080769230769229\n",
      "7.088122605363982\n",
      "7.076335877862593\n",
      "7.083650190114065\n",
      "7.087121212121209\n",
      "7.075471698113205\n",
      "7.0864661654135315\n",
      "7.0936329588014955\n",
      "7.0932835820895495\n",
      "7.089219330855016\n",
      "7.096296296296294\n",
      "7.1070110701106985\n",
      "7.124999999999997\n",
      "7.13186813186813\n",
      "7.1313868613138665\n",
      "7.112727272727271\n",
      "7.1050724637681135\n",
      "7.0974729241877235\n",
      "7.082733812949638\n",
      "7.07885304659498\n",
      "7.082142857142855\n",
      "7.081850533807827\n",
      "7.07446808510638\n",
      "7.084805653710244\n",
      "7.084507042253518\n",
      "7.09473684210526\n",
      "7.090909090909088\n",
      "7.0940766550522625\n",
      "7.111111111111109\n",
      "7.121107266435984\n",
      "7.12758620689655\n",
      "7.134020618556699\n",
      "7.136986301369861\n",
      "7.136518771331056\n",
      "7.119047619047617\n",
      "7.132203389830506\n",
      "7.128378378378376\n",
      "7.117845117845116\n",
      "7.1073825503355685\n",
      "7.100334448160533\n",
      "7.1166666666666645\n",
      "7.122923588039865\n",
      "7.125827814569535\n",
      "7.128712871287127\n",
      "7.13486842105263\n",
      "7.150819672131146\n",
      "7.150326797385619\n",
      "7.156351791530942\n",
      "7.1590909090909065\n",
      "7.161812297734626\n",
      "7.161290322580643\n",
      "7.151125401929258\n",
      "7.137820512820511\n",
      "7.1469648562300305\n",
      "7.136942675159235\n",
      "7.130158730158729\n",
      "7.120253164556961\n",
      "7.113564668769715\n",
      "7.113207547169811\n",
      "7.106583072100313\n",
      "7.1031249999999995\n",
      "7.105919003115265\n",
      "7.099378881987578\n",
      "7.102167182662539\n",
      "7.09567901234568\n",
      "7.092307692307693\n",
      "7.098159509202454\n",
      "7.097859327217126\n",
      "7.082317073170732\n",
      "7.094224924012159\n",
      "7.093939393939395\n",
      "7.099697885196376\n",
      "7.093373493975904\n",
      "7.093093093093094\n",
      "7.092814371257486\n",
      "7.0955223880597025\n",
      "7.092261904761906\n",
      "7.097922848664689\n",
      "7.097633136094675\n",
      "7.100294985250738\n",
      "7.108823529411765\n",
      "7.10850439882698\n",
      "7.102339181286551\n",
      "7.104956268221575\n",
      "7.11046511627907\n",
      "7.104347826086957\n",
      "7.104046242774567\n",
      "7.100864553314121\n",
      "7.094827586206897\n",
      "7.103151862464184\n",
      "7.102857142857143\n",
      "7.1082621082621085\n",
      "7.099431818181818\n",
      "7.110481586402266\n",
      "7.112994350282486\n",
      "7.121126760563381\n",
      "7.1123595505617985\n",
      "7.120448179271709\n",
      "7.120111731843576\n",
      "7.108635097493036\n",
      "7.108333333333333\n",
      "7.1024930747922435\n",
      "7.107734806629834\n",
      "7.099173553719008\n",
      "7.096153846153846\n",
      "7.098630136986301\n",
      "7.092896174863388\n",
      "7.092643051771118\n",
      "7.089673913043479\n",
      "7.092140921409215\n",
      "7.094594594594596\n",
      "7.097035040431268\n",
      "7.104838709677421\n",
      "7.109919571045578\n",
      "7.117647058823531\n",
      "7.114666666666668\n",
      "7.119680851063832\n",
      "7.122015915119365\n",
      "7.121693121693124\n",
      "7.124010554089712\n",
      "7.1368421052631605\n",
      "7.141732283464569\n",
      "7.1335078534031435\n",
      "7.135770234986947\n",
      "7.138020833333336\n",
      "7.142857142857145\n",
      "7.150259067357515\n",
      "7.1550387596899245\n",
      "7.154639175257734\n",
      "7.154241645244218\n",
      "7.151282051282053\n",
      "7.153452685421997\n",
      "7.150510204081635\n",
      "7.152671755725193\n",
      "7.164974619289342\n",
      "7.159493670886079\n",
      "7.154040404040407\n",
      "7.146095717884133\n",
      "7.153266331658294\n",
      "7.152882205513787\n",
      "7.1525000000000025\n",
      "7.144638403990028\n",
      "7.141791044776122\n",
      "7.148883374689829\n",
      "7.138613861386141\n",
      "7.143209876543213\n",
      "7.142857142857146\n",
      "7.140049140049143\n",
      "7.149509803921572\n",
      "7.156479217603915\n",
      "7.153658536585369\n",
      "7.15328467153285\n",
      "7.1577669902912655\n",
      "7.145278450363199\n",
      "7.140096618357491\n",
      "7.146987951807232\n",
      "7.151442307692311\n",
      "7.146282973621107\n",
      "7.14593301435407\n",
      "7.152744630071602\n",
      "7.154761904761908\n",
      "7.159144893111642\n",
      "7.1563981042654055\n",
      "7.1631205673758895\n",
      "7.162735849056607\n",
      "7.157647058823533\n",
      "7.157276995305168\n",
      "7.152224824355975\n",
      "7.1401869158878535\n",
      "7.135198135198138\n",
      "7.1372093023255845\n",
      "7.141531322505804\n",
      "7.134259259259263\n",
      "7.138568129330258\n",
      "7.140552995391709\n",
      "7.147126436781613\n",
      "7.149082568807343\n",
      "7.153318077803208\n",
      "7.162100456621009\n",
      "7.1662870159453345\n",
      "7.1659090909090954\n",
      "7.1587301587301635\n",
      "7.165158371040729\n",
      "7.164785553047409\n",
      "7.166666666666671\n",
      "7.170786516853937\n",
      "7.177130044843054\n",
      "7.167785234899333\n",
      "7.171875000000004\n",
      "7.1826280623608065\n",
      "7.1888888888888935\n",
      "7.1840354767184085\n",
      "7.192477876106199\n",
      "7.1898454746136915\n",
      "7.189427312775336\n",
      "7.193406593406599\n",
      "7.1885964912280755\n",
      "7.199124726477029\n",
      "7.205240174672494\n",
      "7.206971677559918\n",
      "7.208695652173918\n",
      "7.206073752711502\n",
      "7.212121212121217\n",
      "7.209503239740826\n",
      "7.200431034482764\n",
      "7.204301075268823\n",
      "7.210300429184556\n",
      "7.207708779443261\n",
      "7.198717948717955\n",
      "7.196162046908322\n",
      "7.189361702127666\n",
      "7.193205944798308\n",
      "7.186440677966108\n",
      "7.179704016913326\n",
      "7.181434599156125\n",
      "7.172631578947375\n",
      "7.178571428571436\n",
      "7.171907756813424\n",
      "7.171548117154819\n",
      "7.169102296450946\n",
      "7.166666666666673\n",
      "7.1767151767151836\n",
      "7.172199170124488\n",
      "7.173913043478267\n",
      "7.181818181818188\n",
      "7.1793814432989755\n",
      "7.170781893004122\n",
      "7.162217659137584\n",
      "7.163934426229515\n",
      "7.1717791411043015\n",
      "7.165306122448986\n",
      "7.160896130346239\n",
      "7.1585365853658605\n",
      "7.16227180527384\n",
      "7.15384615384616\n",
      "7.1515151515151585\n",
      "7.155241935483878\n",
      "7.152917505030188\n",
      "7.156626506024103\n",
      "7.156312625250507\n",
      "7.148000000000006\n",
      "7.149700598802401\n",
      "7.153386454183273\n",
      "7.155069582504976\n",
      "7.144841269841276\n",
      "7.150495049504957\n",
      "7.146245059288544\n",
      "7.142011834319534\n",
      "7.135826771653551\n",
      "7.127701375245587\n",
      "7.125490196078438\n",
      "7.13111545988259\n",
      "7.134765625000007\n",
      "7.136452241715407\n",
      "7.134241245136194\n",
      "7.128155339805833\n",
      "7.122093023255822\n",
      "7.127659574468093\n",
      "7.1312741312741394\n",
      "7.132947976878621\n",
      "7.138461538461547\n",
      "7.132437619961621\n",
      "7.134099616858246\n",
      "7.1300191204589\n",
      "7.122137404580161\n",
      "7.125714285714294\n",
      "7.1197718631178795\n",
      "7.119544592030369\n",
      "7.12121212121213\n",
      "7.1247637051039785\n",
      "7.126415094339631\n",
      "7.122410546139368\n",
      "7.124060150375948\n",
      "7.123827392120083\n",
      "7.116104868913866\n",
      "7.114018691588794\n",
      "7.111940298507472\n",
      "7.113594040968351\n",
      "7.107806691449823\n",
      "7.107606679035259\n",
      "7.116666666666675\n",
      "7.112754158964888\n",
      "7.110701107011079\n",
      "7.1049723756906165\n",
      "7.102941176470597\n",
      "7.093577981651385\n",
      "7.102564102564111\n",
      "7.09689213893968\n",
      "7.091240875912417\n",
      "7.083788706739535\n",
      "7.085454545454554\n",
      "7.085299455535399\n",
      "7.08514492753624\n",
      "7.088607594936717\n",
      "7.086642599277987\n",
      "7.0864864864864945\n",
      "7.088129496402885\n",
      "7.087971274685825\n",
      "7.082437275985671\n",
      "7.08586762075135\n",
      "7.082142857142865\n",
      "7.0855614973262115\n",
      "7.076512455516022\n",
      "7.074600355239795\n",
      "7.078014184397172\n",
      "7.072566371681424\n",
      "7.0795053003533654\n",
      "7.0776014109347525\n",
      "7.080985915492966\n",
      "7.0755711775044015\n",
      "7.073684210526324\n",
      "7.073555166374788\n",
      "7.075174825174832\n",
      "7.0767888307155395\n",
      "7.069686411149833\n",
      "7.071304347826095\n",
      "7.071180555555563\n",
      "7.071057192374358\n",
      "7.067474048442914\n",
      "7.072538860103634\n",
      "7.075862068965525\n",
      "7.07917383820999\n",
      "7.0756013745704545\n",
      "7.0754716981132155\n",
      "7.073630136986309\n",
      "7.080341880341888\n",
      "7.07508532423209\n",
      "7.080068143100519\n",
      "7.078231292517015\n",
      "7.074702886247886\n",
      "7.081355932203398\n",
      "7.079526226734357\n",
      "7.0777027027027115\n",
      "7.074198988195624\n",
      "7.0673400673400755\n",
      "7.070588235294125\n",
      "7.068791946308733\n",
      "7.073701842546072\n",
      "7.070234113712383\n",
      "7.061769616026719\n",
      "7.0616666666666745\n",
      "7.069883527454251\n",
      "7.0647840531561545\n",
      "7.063018242122728\n",
      "7.061258278145703\n",
      "7.06280991735538\n",
      "7.061056105610569\n",
      "7.0642504118616225\n",
      "7.069078947368429\n",
      "7.067323481116593\n",
      "7.067213114754106\n",
      "7.073649754500827\n",
      "7.0735294117647145\n",
      "7.073409461663957\n",
      "7.070032573289911\n",
      "7.069918699187\n",
      "7.0730519480519565\n",
      "7.072933549432747\n",
      "7.072815533980591\n",
      "7.072697899838457\n",
      "7.069354838709685\n",
      "7.069243156199686\n",
      "7.064308681672034\n",
      "7.06581059390049\n",
      "7.068910256410264\n",
      "7.0688000000000075\n",
      "7.073482428115024\n",
      "7.0701754385964986\n",
      "7.066878980891727\n",
      "7.066772655007957\n",
      "7.063492063492071\n",
      "7.060221870047552\n",
      "7.053797468354438\n",
      "7.0489731437598815\n",
      "7.045741324921144\n",
      "7.047244094488197\n",
      "7.039308176100636\n",
      "7.042386185243336\n",
      "7.043887147335431\n",
      "7.043818466353685\n",
      "7.037500000000008\n",
      "7.040561622464907\n",
      "7.04049844236761\n",
      "7.045101088646976\n",
      "7.046583850931685\n",
      "7.049612403100784\n",
      "7.054179566563476\n",
      "7.055641421947458\n",
      "7.0586419753086505\n",
      "7.057010785824354\n",
      "7.05076923076924\n",
      "7.047619047619057\n",
      "7.0490797546012365\n",
      "7.047473200612567\n",
      "7.0535168195718745\n",
      "7.056488549618329\n",
      "7.0548780487804965\n",
      "7.057838660578395\n",
      "7.057750759878428\n",
      "7.060698027314121\n",
      "7.060606060606069\n",
      "7.055975794251143\n",
      "7.055891238670704\n",
      "7.05128205128206\n",
      "7.0512048192771175\n",
      "7.052631578947378\n",
      "7.054054054054063\n",
      "7.053973013493263\n",
      "7.056886227544919\n",
      "7.056801195814658\n",
      "7.056716417910457\n",
      "7.061102831594644\n",
      "7.059523809523818\n",
      "7.054977711738493\n",
      "7.051928783382798\n",
      "7.053333333333342\n",
      "7.059171597633145\n",
      "7.059084194977852\n",
      "7.058997050147501\n",
      "7.054491899852733\n",
      "7.048529411764714\n",
      "7.042584434654928\n",
      "7.03665689149561\n",
      "7.036603221083464\n",
      "7.043859649122815\n",
      "7.0452554744525635\n",
      "7.04810495626823\n",
      "7.0422125181950594\n",
      "7.037790697674427\n",
      "7.031930333817135\n",
      "7.027536231884066\n",
      "7.031837916063684\n",
      "7.030346820809257\n",
      "7.03174603174604\n",
      "7.0374639769452525\n",
      "7.034532374100727\n",
      "7.030172413793111\n",
      "7.030129124820668\n",
      "7.024355300859607\n",
      "7.020028612303299\n",
      "7.0200000000000085\n",
      "7.021398002853076\n",
      "7.022792022792031\n",
      "7.0241820768136645\n",
      "7.024147727272736\n",
      "7.026950354609938\n",
      "7.025495750708225\n",
      "7.025459688826035\n",
      "7.025423728813569\n",
      "7.025387870239784\n",
      "7.026760563380291\n",
      "7.025316455696212\n",
      "7.02247191011237\n",
      "7.022440392706883\n",
      "7.022408963585445\n",
      "7.026573426573437\n",
      "7.03072625698325\n",
      "7.03626220362623\n",
      "7.0362116991643555\n",
      "7.036161335187771\n",
      "7.040277777777788\n",
      "7.034674063800288\n",
      "7.034626038781173\n",
      "7.04149377593362\n",
      "7.041436464088408\n",
      "7.04000000000001\n",
      "7.039944903581277\n",
      "7.039889958734535\n",
      "7.042582417582427\n",
      "7.045267489711943\n",
      "7.043835616438365\n",
      "7.045143638850898\n",
      "7.0450819672131235\n",
      "7.045020463847212\n",
      "7.044959128065404\n",
      "7.047619047619056\n",
      "7.046195652173922\n",
      "7.044776119402994\n",
      "7.0474254742547515\n",
      "7.047361299052783\n",
      "7.047297297297306\n",
      "7.048582995951426\n",
      "7.0485175202156425\n",
      "7.055181695827734\n",
      "7.052419354838719\n",
      "7.046979865771822\n",
      "7.046916890080438\n",
      "7.045515394912995\n",
      "7.046791443850277\n",
      "7.0520694259012116\n",
      "7.05200000000001\n",
      "7.050599201065257\n",
      "7.047872340425543\n",
      "7.04116865869855\n",
      "7.037135278514599\n",
      "7.039735099337759\n",
      "7.035714285714296\n",
      "7.0356671070013315\n",
      "7.032981530343019\n",
      "7.0329380764163485\n",
      "7.032894736842117\n",
      "7.035479632063087\n",
      "7.0314960629921375\n",
      "7.030144167758858\n",
      "7.031413612565457\n",
      "7.033986928104587\n",
      "7.03916449086163\n",
      "7.04432855280314\n",
      "7.037760416666678\n",
      "7.037711313394029\n",
      "7.032467532467543\n",
      "7.029831387808052\n",
      "7.027202072538871\n",
      "7.023285899094448\n",
      "7.02842377260983\n",
      "7.023225806451624\n",
      "7.027061855670114\n",
      "7.028314028314039\n",
      "7.028277634961451\n",
      "7.025673940949947\n",
      "7.020512820512831\n",
      "7.017925736235606\n",
      "7.016624040920727\n",
      "7.022988505747137\n",
      "7.017857142857154\n",
      "7.016560509554151\n",
      "7.013994910941487\n",
      "7.010165184243975\n",
      "7.01015228426397\n",
      "7.015209125475296\n",
      "7.016455696202543\n",
      "7.01769911504426\n",
      "7.022727272727285\n",
      "7.022698612862559\n",
      "7.0214105793451\n",
      "7.026415094339635\n",
      "7.0251256281407155\n",
      "7.026348808030125\n",
      "7.030075187969937\n",
      "7.030037546933679\n",
      "7.026250000000012\n",
      "7.028714107365804\n",
      "7.026184538653378\n",
      "7.031133250311344\n",
      "7.032338308457723\n",
      "7.0347826086956635\n",
      "7.040942928039714\n",
      "7.035935563816616\n",
      "7.038366336633675\n",
      "7.032138442521643\n",
      "7.03209876543211\n",
      "7.02589395807646\n",
      "7.024630541871932\n",
      "7.0258302583025944\n",
      "7.0208845208845325\n",
      "7.019631901840502\n",
      "7.018382352941188\n",
      "7.019583843329265\n",
      "7.0158924205379085\n",
      "7.013431013431025\n",
      "7.015853658536597\n",
      "7.018270401948854\n",
      "7.019464720194659\n",
      "7.023086269744847\n",
      "7.018203883495157\n",
      "7.016969696969708\n",
      "7.016949152542384\n",
      "7.0157194679564805\n",
      "7.0144927536232\n",
      "7.015681544028962\n",
      "7.013253012048204\n",
      "7.014440433213007\n",
      "7.01923076923078\n",
      "7.018007202881163\n",
      "7.0203836930455745\n",
      "7.019161676646718\n",
      "7.0191387559808724\n",
      "7.015531660692962\n",
      "7.016706443914092\n",
      "7.022646007151382\n",
      "7.023809523809534\n",
      "7.0237812128418655\n",
      "7.021377672209037\n",
      "7.018979833926464\n",
      "7.0236966824644655\n",
      "7.0248520710059275\n",
      "7.021276595744691\n",
      "7.020070838252667\n",
      "7.016509433962274\n",
      "7.014134275618384\n",
      "7.016470588235304\n",
      "7.017626321974158\n",
      "7.015258215962452\n",
      "7.014067995310679\n",
      "7.011709601873547\n",
      "7.010526315789485\n",
      "7.0105140186916\n",
      "7.012835472578774\n",
      "7.012820512820524\n",
      "7.01396973224681\n",
      "7.01279069767443\n",
      "7.009291521486655\n",
      "7.009280742459408\n",
      "7.008111239860962\n",
      "7.006944444444456\n",
      "7.008092485549144\n",
      "7.0092378752886955\n",
      "7.008073817762411\n",
      "7.004608294930888\n",
      "7.00805523590335\n",
      "7.006896551724151\n",
      "7.011481056257189\n",
      "7.010321100917444\n",
      "7.012600229095088\n",
      "7.008009153318091\n",
      "7.013714285714299\n",
      "7.009132420091337\n",
      "7.010262257696706\n",
      "7.007972665148076\n",
      "7.012514220705359\n",
      "7.013636363636376\n",
      "7.014755959137356\n",
      "7.010204081632666\n",
      "7.013590033975098\n",
      "7.0147058823529544\n",
      "7.010169491525437\n",
      "7.005643340857801\n",
      "7.006764374295391\n",
      "7.010135135135148\n",
      "7.010123734533197\n",
      "7.006741573033722\n",
      "7.00673400673402\n",
      "7.003363228699565\n",
      "7.008958566629353\n",
      "7.006711409395987\n",
      "7.006703910614538\n",
      "7.007812500000013\n",
      "7.006688963210715\n",
      "7.010022271714935\n",
      "7.013348164627377\n",
      "7.013333333333347\n",
      "7.014428412874597\n",
      "7.0155210643015655\n",
      "7.015503875969006\n",
      "7.01548672566373\n",
      "7.014364640883991\n",
      "7.016556291390741\n",
      "7.014332965821402\n",
      "7.014317180616753\n",
      "7.013201320132026\n",
      "7.010989010989024\n",
      "7.006586169045018\n",
      "7.004385964912293\n",
      "7.008762322015347\n",
      "7.010940919037211\n",
      "7.01202185792351\n",
      "7.008733624454161\n",
      "7.0109051254089545\n",
      "7.013071895424849\n",
      "7.018498367791089\n",
      "7.019565217391317\n",
      "7.018458197611304\n",
      "7.017353579175717\n",
      "7.017334777898171\n",
      "7.01731601731603\n",
      "7.016216216216229\n",
      "7.01295896328295\n",
      "7.015102481121911\n",
      "7.010775862068978\n",
      "7.007534983853618\n",
      "7.003225806451625\n",
      "6.997851772287874\n",
      "6.997854077253231\n",
      "6.9946409431940095\n",
      "6.98929336188438\n",
      "6.985026737967926\n",
      "6.986111111111123\n",
      "6.987193169690514\n",
      "6.989339019189777\n",
      "6.987220447284357\n",
      "6.981914893617033\n",
      "6.982996811902244\n",
      "6.97983014861997\n",
      "6.985153764581137\n",
      "6.990466101694928\n",
      "6.9873015873016\n",
      "6.988372093023268\n",
      "6.984160506863793\n",
      "6.984177215189886\n",
      "6.985247629083259\n",
      "6.990526315789487\n",
      "6.990536277602537\n",
      "6.987394957983207\n",
      "6.989506820566645\n",
      "6.990566037735863\n",
      "6.99057591623038\n",
      "6.992677824267796\n",
      "6.994775339602939\n",
      "6.991649269311078\n",
      "6.989572471324309\n",
      "6.98854166666668\n",
      "6.986472424557766\n",
      "6.987525987526001\n",
      "6.9823468328141365\n",
      "6.98132780082989\n",
      "6.983419689119185\n",
      "6.981366459627344\n",
      "6.983453981385743\n",
      "6.983471074380179\n",
      "6.984520123839023\n",
      "6.9835051546391895\n",
      "6.982492276004134\n",
      "6.980452674897133\n",
      "6.979445015416252\n",
      "6.982546201232047\n",
      "6.98564102564104\n",
      "6.986680327868867\n",
      "6.984646878198581\n",
      "6.985685071574657\n",
      "6.988764044943835\n",
      "6.985714285714301\n",
      "6.985728848114184\n",
      "6.984725050916512\n",
      "6.980671414038672\n",
      "6.980691056910584\n",
      "6.9786802030457\n",
      "6.978701825557824\n",
      "6.976697061803459\n",
      "6.975708502024306\n",
      "6.979777553083937\n",
      "6.974747474747489\n",
      "6.9747729566095\n",
      "6.975806451612917\n",
      "6.974823766364566\n",
      "6.975855130784723\n",
      "6.973869346733683\n",
      "6.971887550200818\n",
      "6.973921765295902\n",
      "6.97094188376755\n",
      "6.972972972972988\n",
      "6.976000000000015\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "\n",
    "def sample(dices=2):\n",
    "    x = 0\n",
    "    for _ in range(dices):\n",
    "        x += np.random.choice([1, 2, 3, 4, 5, 6])\n",
    "    return x\n",
    "\n",
    "\n",
    "trial = 1000\n",
    "V, n = 0, 0\n",
    "\n",
    "for _ in range(trial):\n",
    "    s = sample()\n",
    "    n += 1\n",
    "    V += (s - V) / n\n",
    "    print(V)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "269d0d79",
   "metadata": {},
   "source": [
    "## ch05/mc_eval.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3a02297b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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LVK4/xXpHLCI3JJLGRn4TZhA8pkzNPfwoHubNqZb+svRCFhEbsmf54B/WbAAu93OvLVr89XMi47Gb8IE/CZMIOXMmSIt17V6dc798QdZNhsASampuLu6FmvvpYUCWERuS5VKlXh31CjejorKDc0/Pfvww8SFhhIXGopbzZpFWp7FYqGrry8RP/wAwKLNm+lbTKc3ShsFsIjctraNGtHay4tlW7det+7Xs2fxGD2a0FWreC0iAo/Rozl/8SIAPV97LXeUPHvIEEJXrsRnzBhSL1xg1AMP3PFtMMFit9uLXBzg72/f+f33d7Cd8uMfY8eabqFMWeDhYbqFssXX13QHZYqlf/9Yu90ecO10jYBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIITf8KbLFYnkKeAqggbs7nD59x5sqDxaMHGm6hbKljF6sxZg5c0x3UC7ccARst9s/stvtAXa7PaB2Gf05oIiICToFISJiiK6GVoj09HSGjhtH7N69uLq4EP7BB3h5euarG/nii6zesIE6tWqx/6qLRp85e5bHxozhWGIiXp6efPnBB7g4O5fgFpQu6RkZDJ0+ndhDh3CtUYPw117Dy80tT03iyZMMnT6dk2fOYLFYeOqRR3jhsccAePm991i1bRuOViuNPTz4dOpUnKtXN7EppUJ6ZiZDlywhNjER16pVCR8+HK9C3qHasrMJePNN3J2dWf2PfwAw6osv2Hn8OHagae3afPbEE1SrVKkEt6D0SM/OZuihQ8ReuIBrxYqEN2+O11135ak5dPEij/30U+7jhMuXebVhQ8Z5ePDKsWP859dfqZ1zx47Xvb3pWcTrXmgEXIiFYWG4ODkRv3074598komvv15g3fCQENYuWZJv+qx58/h7584c2baNv3fuzKx58+50y6XawpUrcalRg/iICMY//jgTC9gfVgcH3h47loNhYez4+GPmRURw8OhRALq3b8/+pUvZu3QpTT09mbloUUlvQqmycMcOXKpUIX7aNMZ36cLElSsLrZ27ZQvN69XLM+2dfv3YM2kSeydNooGLC+9/992dbrnUWvjrr7hYrcS3b894d3cm5vzNXe1vVaoQ5+9PnL8/se3aUaVCBfrVqpX7/Hh399znixq+oAAuVNT69QwLCQEguFcvNm7bRkHXzbivY0dqFjCyvXr+YSEhrFi37o72W9pFbd3K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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from collections import defaultdict\n",
    "import numpy as np\n",
    "from dezerogym.gridworld import GridWorld\n",
    "\n",
    "\n",
    "class RandomAgent:\n",
    "    def __init__(self):\n",
    "        self.gamma = 0.9\n",
    "        self.action_size = 4\n",
    "\n",
    "        random_actions = {0: 0.25, 1: 0.25, 2: 0.25, 3: 0.25}\n",
    "        self.pi = defaultdict(lambda: random_actions)\n",
    "        self.V = defaultdict(lambda: 0)\n",
    "        self.cnts = defaultdict(lambda: 0)\n",
    "        self.memory = []\n",
    "\n",
    "    def get_action(self, state):\n",
    "        action_probs = self.pi[state]\n",
    "        actions = list(action_probs.keys())\n",
    "        probs = list(action_probs.values())\n",
    "        return np.random.choice(actions, p=probs)\n",
    "\n",
    "    def add(self, state, action, reward):\n",
    "        data = (state, action, reward)\n",
    "        self.memory.append(data)\n",
    "\n",
    "    def reset(self):\n",
    "        self.memory.clear()\n",
    "\n",
    "    def eval(self):\n",
    "        G = 0\n",
    "        for data in reversed(self.memory):\n",
    "            state, action, reward = data\n",
    "            G = self.gamma * G + reward\n",
    "            self.cnts[state] += 1\n",
    "            self.V[state] += (G - self.V[state]) / self.cnts[state]\n",
    "\n",
    "\n",
    "env = GridWorld()\n",
    "agent = RandomAgent()\n",
    "\n",
    "episodes = 1000\n",
    "for episode in range(episodes):\n",
    "    state = env.reset()\n",
    "    agent.reset()\n",
    "\n",
    "    while True:\n",
    "        action = agent.get_action(state)\n",
    "        next_state, reward, done = env.step(action)\n",
    "\n",
    "        agent.add(state, action, reward)\n",
    "        if done:\n",
    "            agent.eval()\n",
    "            break\n",
    "\n",
    "        state = next_state\n",
    "\n",
    "env.render_v(agent.V)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0a748f90",
   "metadata": {},
   "source": [
    "## ch05/mc_control.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "a150e6e9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWAAAADrCAYAAABXYUzjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAANrElEQVR4nO3bb0yVBf/H8c+5wSXqFp5+IsnJG4myhOioWMJWwQNyk8C0ZsoD/w631tZWsTVb9siVpuhm07E2G2iNSW3+AaUemKxwNScMnS6RMkjQWNCgQZATr9+D+xe/m0T+XvrlXOf92tzgnIvrfM/Xs/fOLg4+x3EEALj3/mU9AACEKwIMAEYIMAAYIcAAYIQAA4ARAgwARiJHc3B0dLSTmJh4t2YJK93d3Zo6dar1GJ7BPt3FPt1VU1PT5jjOjH/ePqoAz5w5U2fPnnVvqjBWVVWljIwM6zE8g326i326y+fzNQ12O5cgAMAIAQYAIwQYAIwQYAAwQoABwAgBBgAjBBgAjBBgADBCgAHACAEGACMEGACMEGAAMEKAAcAIAQYAIwQYAIwQYAAwQoABwAgBBgAjBBgAjBBgADBCgAHACAEGACMEGACMEGAAMEKAAcAIAQYAIwQYAIwQYAAwErYBPn/+vK5cuWI9hmewT3exz/AQtgHu7e3Viy++yIvcJezTXewzPERaD3AvfPrpp9q2bdttt1+/fl2rVq3SmTNnDKYKXezTXewzjDmOM+J/jz76qOMVTU1NzpNPPulUV1ebPP6pU6dMHvduYZ/uYp/eIumsM0hTw+Id8GDq6+u1b98+paenW4/iCezTXewzPIRtgLOysqxH8BT26S72GR7C9pdwAGCNAAOAEQIMAEYIMAAYIcAAYIQAA4ARAgwARggwABghwABghAADgBECDABGCDAAGCHAAGCEAAOAEQIMAEYIMAAYIcAAYIQAA4ARAgwARggwABghwABghAADgBECDGBMIiIiFAwGlZycrJycHHV0dAx63IYNGxQTE6Pk5OQ7nstxHL3++utKTExUSkqKamtrBz2up6dHzz33nPr6+iRJDQ0NeuGFF/Twww9r4cKFyszM1DfffNN//JEjR5SSkqLHH39cTzzxhI4cOTLgfG1tbZo0aZKKiooG3B4fH6+2trYBt1VUVOi9996743MYCwIMYEyioqJUV1enCxcuyO/3a+/evYMet27dOn355ZdDnquyslINDQ1qaGjQxx9/rFdffXXQ4z755BOtWLFCERER6u3tVXZ2tjZt2qSffvpJNTU1+uijj3TlyhVJ0rlz51RQUKCjR4/qhx9+0LFjx1RQUKDz58/3n+/zzz/X4sWLVVpaOuzzzc7OVnl5uf78889hjx0pAgxg3NLS0tTS0jLofc8++6z8fv+QP3/06FGtWbNGPp9PixcvVkdHh65fv37bcZ999pmWLVvW/3VaWppyc3P7709OTta6deskSTt37tQ777yjOXPmSJLmzJmjzZs3a8eOHf3Hl5aWqrCwUC0tLWpubh5yRp/Pp4yMDFVUVAx53GgQYADj0tfXp5MnTw4I4Wi1tLTooYce6v8+EAjcFvQbN27oypUrio+PlyRdvHhRCxYsuOM5L168qIULFw64LTU1VRcvXpQkXb16VdevX9dTTz2llStX6tChQ8POmZqaqm+//XakT2tYBBjAmPT09CgYDCo2Nlatra3Kysq6q4/X1tam6OjoO96/fPlyJScna8WKFSM636FDh7Ry5UpJ0qpVq0Z0GSImJkbXrl0b0flHggADGJO/rwE3NTXJcZw7XgMeibi4OF29erX/++bmZsXFxd32eL29vf3fJyUlDfhl3eHDh1VcXKzff/9dkjRv3jzV1NQMOEdNTY2SkpIk/efyQ3FxseLj45Wbm6vz58+roaFhyDl7e3sVFRU1tic5CAIMYFymTJmiPXv2qLCwUDdv3hzTOXJzc3XgwAE5jqPvv/9e999/vx588MEBx0yfPl19fX39Ec7Ly9Pp06d17Nix/mP++xdkBQUF+uCDD9TY2ChJamxs1Pvvv6+33npLly9fVldXl1paWtTY2KjGxkZt3rx52HfBly9fHvLTHKNFgAGM2/z585WSkjJowFavXq20tDTV19crEAho//79kqSioqL+j38tXbpUCQkJSkxMVH5+vvbt2zfo4zz//POqrq6W9J93xBUVFSoqKlJCQoLS0tK0detWvfvuu5KkYDCo7du3KycnR4899phycnL04YcfKhgMqrS0VMuXLx9w7pdeemnA/CkpKQoEAgoEAnrzzTclSadOnVJ2dvY4t/X/fI7jjPjguXPnOvX19a49eDirqqpSRkaG9RiewT7dNVH3WVtbq927d+vgwYP3/LFbW1uVl5enkydPjvpnfT5fjeM4qf+8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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def greedy_probs(Q, state, epsilon=0, action_size=4):\n",
    "    qs = [Q[(state, action)] for action in range(action_size)]\n",
    "    max_action = np.argmax(qs)\n",
    "\n",
    "    base_prob = epsilon / action_size\n",
    "    action_probs = {action: base_prob for action in range(action_size)}  #{0: ε/4, 1: ε/4, 2: ε/4, 3: ε/4}\n",
    "    action_probs[max_action] += (1 - epsilon)\n",
    "    return action_probs\n",
    "\n",
    "\n",
    "class McAgent:\n",
    "    def __init__(self):\n",
    "        self.gamma = 0.9\n",
    "        self.epsilon = 0.1\n",
    "        self.alpha = 0.1\n",
    "        self.action_size = 4\n",
    "\n",
    "        random_actions = {0: 0.25, 1: 0.25, 2: 0.25, 3: 0.25}\n",
    "        self.pi = defaultdict(lambda: random_actions)\n",
    "        self.Q = defaultdict(lambda: 0)\n",
    "        self.memory = []\n",
    "\n",
    "    def get_action(self, state):\n",
    "        action_probs = self.pi[state]\n",
    "        actions = list(action_probs.keys())\n",
    "        probs = list(action_probs.values())\n",
    "        return np.random.choice(actions, p=probs)\n",
    "\n",
    "    def add(self, state, action, reward):\n",
    "        data = (state, action, reward)\n",
    "        self.memory.append(data)\n",
    "\n",
    "    def reset(self):\n",
    "        self.memory.clear()\n",
    "\n",
    "    def update(self):\n",
    "        G = 0\n",
    "        for data in reversed(self.memory):\n",
    "            state, action, reward = data\n",
    "            G = self.gamma * G + reward\n",
    "            key = (state, action)\n",
    "            self.Q[key] += (G - self.Q[key]) * self.alpha\n",
    "            self.pi[state] = greedy_probs(self.Q, state, self.epsilon)\n",
    "\n",
    "\n",
    "env = GridWorld()\n",
    "agent = McAgent()\n",
    "\n",
    "episodes = 10000\n",
    "for episode in range(episodes):\n",
    "    state = env.reset()\n",
    "    agent.reset()\n",
    "\n",
    "    while True:\n",
    "        action = agent.get_action(state)\n",
    "        next_state, reward, done = env.step(action)\n",
    "\n",
    "        agent.add(state, action, reward)\n",
    "        if done:\n",
    "            agent.update()\n",
    "            break\n",
    "\n",
    "        state = next_state\n",
    "\n",
    "env.render_q(agent.Q)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "466b418f",
   "metadata": {},
   "source": [
    "## ch05/importance_sampling.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3925f10b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "E_pi[x] 2.7\n",
      "MC: 2.77 (var: 0.34)\n",
      "IS: 2.78 (var: 2.56)\n"
     ]
    }
   ],
   "source": [
    "x = np.array([1, 2, 3])\n",
    "pi = np.array([0.1, 0.1, 0.8])\n",
    "\n",
    "# =========== Expectation ==================\n",
    "e = np.sum(x * pi)\n",
    "print('E_pi[x]', e)\n",
    "\n",
    "# =========== Monte Carlo ==================\n",
    "n = 100\n",
    "samples = []\n",
    "for _ in range(n):\n",
    "    s = np.random.choice(x, p=pi)\n",
    "    samples.append(s)\n",
    "print('MC: {:.2f} (var: {:.2f})'.format(np.mean(samples), np.var(samples)))\n",
    "\n",
    "# =========== Importance Sampling ===========\n",
    "b = np.array([0.2, 0.2, 0.6])  #b = np.array([1/3, 1/3, 1/3])\n",
    "samples = []\n",
    "for _ in range(n):\n",
    "    idx = np.arange(len(b))  # [0, 1, 2]\n",
    "    i = np.random.choice(idx, p=b)\n",
    "    s = x[i]\n",
    "    rho = pi[i] / b[i]\n",
    "    samples.append(rho * s)\n",
    "print('IS: {:.2f} (var: {:.2f})'.format(np.mean(samples), np.var(samples)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "30fc4056",
   "metadata": {},
   "source": [
    "## ch05/mc_control_offpolicy.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f7615693",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "class McOffPolicyAgent:\n",
    "    def __init__(self):\n",
    "        self.gamma = 0.9\n",
    "        self.epsilon = 0.1\n",
    "        self.alpha = 0.2\n",
    "        self.action_size = 4\n",
    "\n",
    "        random_actions = {0: 0.25, 1: 0.25, 2: 0.25, 3: 0.25}\n",
    "        self.pi = defaultdict(lambda: random_actions)\n",
    "        self.b = defaultdict(lambda: random_actions)\n",
    "        self.Q = defaultdict(lambda: 0)\n",
    "        self.memory = []\n",
    "\n",
    "    def get_action(self, state):\n",
    "        action_probs = self.b[state]\n",
    "        actions = list(action_probs.keys())\n",
    "        probs = list(action_probs.values())\n",
    "        return np.random.choice(actions, p=probs)\n",
    "\n",
    "    def add(self, state, action, reward):\n",
    "        data = (state, action, reward)\n",
    "        self.memory.append(data)\n",
    "\n",
    "    def reset(self):\n",
    "        self.memory.clear()\n",
    "\n",
    "    def update(self):\n",
    "        G = 0\n",
    "        rho = 1\n",
    "\n",
    "        for data in reversed(self.memory):\n",
    "            state, action, reward = data\n",
    "            key = (state, action)\n",
    "\n",
    "            G = self.gamma * rho * G + reward\n",
    "            self.Q[key] += (G - self.Q[key]) * self.alpha\n",
    "            rho *= self.pi[state][action] / self.b[state][action]\n",
    "\n",
    "            self.pi[state] = greedy_probs(self.Q, state, epsilon=0)\n",
    "            self.b[state] = greedy_probs(self.Q, state, self.epsilon)\n",
    "\n",
    "\n",
    "env = GridWorld()\n",
    "agent = McOffPolicyAgent()\n",
    "\n",
    "episodes = 10000\n",
    "for episode in range(episodes):\n",
    "    state = env.reset()\n",
    "    agent.reset()\n",
    "\n",
    "    while True:\n",
    "        action = agent.get_action(state)\n",
    "        next_state, reward, done = env.step(action)\n",
    "\n",
    "        agent.add(state, action, reward)\n",
    "        if done:\n",
    "            agent.update()\n",
    "            break\n",
    "\n",
    "        state = next_state\n",
    "\n",
    "env.render_q(agent.Q)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
